import time
import os
from threading import Thread, current_thread


def func():
    time.sleep(2)
    t = current_thread()
    print(f"子线程运行了!TID={t.ident}") # 获取当前线程的线程号(TID)


# 因为线程的创建并不需要复制进程空间，所以windows也就不会执行import，因此不写 if __name__ == '__main__': 也没有关系
# 但是养成良好的编程习惯，建议大家写上
if __name__ == '__main__':
    print("主进程的PID=", os.getpid())  # 主进程ID
    # 新建一个线程对象
    t = Thread(target=func)
    t.start()  # 异步非阻塞，向操作系统申请启动一个线程，但是并不等待线程的创建与执行
    # python的运行时，就会创建一个主进程，所以我们不需要手动创建主进程
    # 所以，我们上面创建的Thread线程是属于给主进程创建了一个子线程(child thread)
    # 注意：是子线程！！！因为主进程是在创建进程时，默认会顺道创建一个主线程的
    # 所以，当前我们运行了这个python程序，实际上是在系统中启动了1个主进程，1个主线程和1个子线程
    thread = current_thread()
    print('主线程PID', thread.ident)  # 获取当前线程的线程号(TID)
